Создание высокопроизводительного сервера на Rust — это путь в область абстракций с нулевой стоимостью. Перенос сложности из времени выполнения в время компиляции с использованием процедурных макросов, мы гарантируем, что наша логика маршрутизации так же эффективна, как ручная ассемблерная кодировка.
1. Каркас
Мы начинаем с $ cargo new hello и $ cd hello. Цикл обратной связи ускоряется благодаря $ cargo check, который проверяет типы без затрат на полную генерацию бинарного файла.
2. Процедурное метапрограммирование
В отличие от macro_rules!, макросы-атрибуты (например, #[route]) и функциональные макросы (например, sql!()) напрямую работают с TokenStream напрямую. Макросы-атрибуты уникальны; они могут заменить аннотируемый элемент, позволяя обернуть функции-обработчики в предварительно оптимизированные таблицы маршрутизации во время компиляции.